// // 通过setTimeout实现
// function throttle(fn, delay) {
//   let timer = null;
//   return function() {
//     let context = this;
//     let args = arguments;
//     // 如果存在事件间隔 就直接返回，保证了多次执行回调函数只能生效一次。
//     if (timer) {
//       return;
//     }
//     timer = setTimeout(function() {
//       fn.apply(context, args);
//       timer = null;
//     }, delay)
//   }
// }

// 通过时间戳实现
function throttle(fn, delay) {
  let previous = 0;
  return function() {
    let context = this;
    let args = arguments;
    // 当前系统的时间
    let now = new Date();
    // 当前时间与之前的时间差 超过设置的时间的时候
    // 就可以执行回调函数
    if (now - previous > delay) {
      fn.apply(context, args);
      previous = now;
    }
  }
}

// 测试
function testThrottle(e, content) {
  console.log(e, content);
}
var testThrottleFn = throttle(testThrottle, 1000); // 节流函数
document.onmousemove = function(e) {
  testThrottleFn(e, 'throttle'); // 给节流函数传参
}